﻿CREATE PROCEDURE [dbo].[Hogar_ParteDiarioComedor_Insertar]   
	@ParteDiarioComedorAsXml Xml
AS 
BEGIN

/*****************************************************************************************************************************************/
-- Purpose:   inserta un nuevo parte diario comedor
/*****************************************************************************************************************************************/ 

DECLARE @ParteDiarioComedorId INT
DECLARE @ParteMensualComedorId INT
DECLARE @Mes INT
DECLARE @Año INT

BEGIN TRY
    BEGIN TRAN 

		SELECT @Mes = DatosParteMensualComedor.ParteMensualComedor.query('./Mes').value('.','INT')
		FROM @ParteDiarioComedorAsXml.nodes('/DatosParteMensualComedor/ParteMensualComedor') AS DatosParteMensualComedor(ParteMensualComedor)

		SELECT @Año = DatosParteMensualComedor.ParteMensualComedor.query('./Año').value('.','INT')
		FROM @ParteDiarioComedorAsXml.nodes('/DatosParteMensualComedor/ParteMensualComedor') AS DatosParteMensualComedor(ParteMensualComedor)

	    SELECT @ParteMensualComedorId = [ParteMensualComedorId] 
		FROM [dbo].[ParteMensualComedor] WITH (NOLOCK)
		WHERE [Mes] = @Mes AND [Año] = @Año

		IF (@ParteMensualComedorId IS NULL)
		BEGIN
			INSERT INTO [dbo].[ParteMensualComedor]
			([Mes],
			 [Año]
			)
			VALUES (@Mes, @Año)

			SET @ParteMensualComedorId = @@IDENTITY
		END

		INSERT INTO [dbo].[ParteDiarioComedor]
           ([Fecha]
           ,[CantidadRealizada]
           ,[CantidadEntregadaComedor]
           ,[CantidadEntregadaVianda]
           ,[Observacion]
           ,[Menu]
		   ,[ParteMensualComedorId]
		   ,[Activo])
        SELECT DatosParteMensualComedor.ParteDiarioComedor.query('./Fecha').value('.','DATE'),
        CAST(NULLIF(DatosParteMensualComedor.ParteDiarioComedor.query('./CantidadRealizada').value('.','INT'),'') as INT),
        CAST(NULLIF(DatosParteMensualComedor.ParteDiarioComedor.query('./CantidadEntregadaComedor').value('.','INT'),'') as INT),
        CAST(NULLIF(DatosParteMensualComedor.ParteDiarioComedor.query('./CantidadEntregadaVianda').value('.','INT'),'') as INT),
        DatosParteMensualComedor.ParteDiarioComedor.query('./Observacion').value('.','VARCHAR(250)'),
        DatosParteMensualComedor.ParteDiarioComedor.query('./Menu').value('.','VARCHAR(250)'),
		@ParteMensualComedorId,
		1
        FROM @ParteDiarioComedorAsXml.nodes('/DatosParteMensualComedor/ParteDiarioComedor') AS DatosParteMensualComedor(ParteDiarioComedor)
		
		SET @ParteDiarioComedorID = @@IDENTITY
		
		INSERT INTO [dbo].[ResponsableParteDiarioComedor]
           ([ParteDiarioComedorId]
           ,[PersonalCocinaId])
        SELECT
			@ParteDiarioComedorId,
			PersonalCocina.PersonalCocina.query('./PersonalCocinaId').value('.','INT')
		FROM @ParteDiarioComedorAsXml.nodes('/DatosParteMensualComedor/PersonalCocina/PersonalCocina') AS PersonalCocina(PersonalCocina)
		
		
    COMMIT TRAN
END TRY
BEGIN CATCH
	SELECT ERROR_NUMBER() AS Number,
		ERROR_MESSAGE() AS Message
	ROLLBACK TRAN
	
END CATCH

END